package code.google.jcontainer.resolver;

/**
 * Interface for resolving Class Annotation.
 * The annotation annotated on Class will be resolved at "Before Construct", "After Construct", "Before Method", "After Method".
 *
 * @author <a href="mailto:jfox.young@gmail.com">Young Yang</a>
 */
public interface ClassAnnotationResolver extends AnnotationResolver {

    /**
     * Resolve class annotation before construct the component
     *
     */
    void resolveClassAnnotationBeforeConstruct(ClassResolveContext classResolveContext) throws ResolverException;

    /**
     * Resolve class annotation after the component was constructed
     *
     */
    void resolveClassAnnotationAfterConstruct(ClassResolveContext classResolveContext) throws ResolverException;

    /**
     * Resolve class annotation before invoke a method
     */
    void resolveClassAnnotationBeforeMethod(MethodResolveContext methodResolveContext) throws ResolverException;

    /**
     * Resolve class annotation before a method was invoked
     */
    void resolveClassAnnotationAfterMethod(MethodResolveContext methodResolveContext) throws ResolverException;

}
